https://leetcode.cn/problems/uUsW3B/description/
//class Solution
//{
//    vector<vector<int>> ret;
//    vector<int> path;
//    int _n;
//    int _k;
//public:
//    vector<vector<int>> combine(int n, int k)
//    {
//        _n = n;
//        _k = k;
//        dfs(1);
//        return ret;
//    }
//
//    void dfs(int start)
//    {
//        if (path.size() == _k)
//        {
//            ret.push_back(path);
//            return;
//        }
//
//        for (int i = start; i <= _n; i++)
//        {
//            path.push_back(i);
//            dfs(i + 1);
//            path.pop_back();
//        }
//
//    }
//};


https://leetcode.cn/problems/IDBivT/description/
//class Solution
//{
//    int left, right, n;
//    vector<string> ret;
//    string s1;
//public:
//    vector<string> generateParenthesis(int _n)
//    {
//        n = _n;
//        dfs();
//        return ret;
//    }
//
//    void dfs()
//    {
//        if (right == n)
//        {
//            ret.push_back(s1);
//            return;
//        }
//
//        if (left < n)
//        {
//            s1.push_back('(');   left++;
//            dfs();
//            s1.pop_back();   left--;
//        }
//
//        if (right < left)
//        {
//            s1.push_back(')');  right++;
//            dfs();
//            s1.pop_back();  right--;
//        }
//    }
//};